package com.feicheng.iou.controller.statisticsInfo;

import com.feicheng.iou.constant.SessionConstant;
import com.feicheng.iou.pojo.login.LoginReturnPOJO;
import com.feicheng.iou.pojo.login.PermissionLevelTwoPOJO;
import com.feicheng.iou.pojo.login.PermissionListPOJO;
import com.feicheng.iou.pojo.statisticsInfoPOJO.StatisticsInfoParamPOJO;
import com.feicheng.iou.result.ResultInfoV110;
import com.feicheng.iou.service.statisticsInfo.StatisticsInfoService;
import com.feicheng.iou.util.PermissionUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author wuweinan
 * @since 2021-8-9
 */
@RestController
@RequestMapping("/iou/statisticsInfo")
@Slf4j
public class StatisticsInfoController {

    @Autowired
    private StatisticsInfoService statisticsInfoService; //统计业务实现类

    /**
     * @param
     * @return ResultInfoV110
     * @Author wuweinan
     * @Description 信息统计接口
     * @Date 2021-8-9
     */
    @GetMapping
    public ResultInfoV110 statisticsInfo(StatisticsInfoParamPOJO statisticsInfoParamPOJO, HttpServletRequest request) {
        log.info("StatisticsInfoController的statisticsInfo方法进入,参数statisticsInfoParamPOJO为" + statisticsInfoParamPOJO);
        //统计可分配权限个数
        Integer distributionCount = 0;
        //从Session中获取用户信息
        LoginReturnPOJO loginReturnPOJO =
                (LoginReturnPOJO) request.getSession().getAttribute(SessionConstant.CURRENT);
        //判断是否有可分配权限
        for (PermissionListPOJO permission : loginReturnPOJO.getPermissions()) {
            for (PermissionLevelTwoPOJO permissionPermission : permission.getPermissions()) {
                if (permissionPermission.getName().equals("可分配")) {
                    distributionCount++;
                }
            }
        }

        //有"可分配 "权限  统计所有市场部人员效绩    //分页
        if (distributionCount >= 1) {
            return statisticsInfoService.statisticsAllUser(statisticsInfoParamPOJO);
        }
        //没有"可分配权限"  查看自己的效绩 自己的用户Id 作为写死的检索条件  //不分页
        return statisticsInfoService.statisticsMyself(statisticsInfoParamPOJO,loginReturnPOJO.getUser().getUserId());
    }

    /**
     * @param
     * @return ResultInfoV110
     * @Author wuweinan
     * @Description 统计未回访条数
     * @Date 2021-8-9
     */
    @GetMapping("/unHandleBackview")
    public ResultInfoV110 statisticsUnHandleBackview(StatisticsInfoParamPOJO statisticsInfoParamPOJO, HttpServletRequest request) {
        log.info("StatisticsInfoController的statisticsUnHandleBackview方法进入,参数statisticsInfoParamPOJO为"
                + statisticsInfoParamPOJO);
        //统计可分配权限个数
        Integer distributionCount = 0;
        //从Session中获取用户信息
        LoginReturnPOJO loginReturnPOJO =
                (LoginReturnPOJO) request.getSession().getAttribute(SessionConstant.CURRENT);
        //判断是否有可分配权限
        for (PermissionListPOJO permission : loginReturnPOJO.getPermissions()) {
            for (PermissionLevelTwoPOJO permissionPermission : permission.getPermissions()) {
                if (permissionPermission.getName().equals("可分配")) {
                    distributionCount++;
                }
            }
        }

        //有"可分配 "权限  统计所有市场部人员效绩    //分页
        if (distributionCount >= 1) {
            return statisticsInfoService.statisticsAllUnHandleBackview(statisticsInfoParamPOJO);
        }
        //没有"可分配权限"  查看自己的效绩 自己的用户Id 作为写死的检索条件  //不分页
        return statisticsInfoService.statisticsMyHandleUnHandleBackview(statisticsInfoParamPOJO,loginReturnPOJO.getUser().getUserId());
    }

    /**
     * @param
     * @return ResultInfoV110
     * @Author wuweinan
     * @Description 统计今日待回访和未到访数量
     * @Date 2021-8-9
     */
    @GetMapping("/todayUnHandle")
    public ResultInfoV110 statisticsUnHandleCountToday(HttpServletRequest request){
        //获取封装在Session的用户信息
        LoginReturnPOJO loginReturnPOJO =
                (LoginReturnPOJO) request.getSession().getAttribute(SessionConstant.CURRENT);

        //获取用户Id
        Integer userId = loginReturnPOJO.getUser().getUserId();
        //统计今日待办项
        return statisticsInfoService.statisticsTodayUnHandle(userId) ;
    }

    /**
     * @param
     * @return ResultInfoV110
     * @Author wuweinan
     * @Description 统计所有人今日待回访和未到访数量
     * @Date 2021-8-9
     */
    @GetMapping("/allTodayUnHandle")
    public ResultInfoV110 statisticsAllUnHandleCountToday(HttpServletRequest request){
     log.info("StatisticsInfoController的statisticsAllUnHandleCountToday方法进入,没有参数");

        //统计可分配权限个数
        Integer distributionCount = 0;
        //从Session中获取用户信息
        LoginReturnPOJO loginReturnPOJO =
                (LoginReturnPOJO) request.getSession().getAttribute(SessionConstant.CURRENT);
        //判断是否有可分配权限
        for (PermissionListPOJO permission : loginReturnPOJO.getPermissions()) {
            for (PermissionLevelTwoPOJO permissionPermission : permission.getPermissions()) {
                if (permissionPermission.getName().equals("可分配")) {
                    distributionCount++;
                }
            }
        }

        if(distributionCount >= 1){
            return statisticsInfoService.statisticsAllTodayUnHandle();
        }
        else {
           return ResultInfoV110.success("没有权限查看");
        }
    }

    /**
     * @param statisticsInfoParamPOJO
     * @return ResultInfoV110
     * @Author wuweinan
     * @Description 统计今日的预约回访差集今日回访
     * @Date 2021-8-9
     */
    @GetMapping("/todayUnHandleBackview/list")
    public ResultInfoV110 statisticsTodayUnHandleBackview(StatisticsInfoParamPOJO statisticsInfoParamPOJO,
                                                          HttpServletRequest request
                                                          ){
        log.info("StatisticsInfoController的statisticsTodayUnHandleBackview方法进入," +
                "参数statisticsInfoParamPOJO为"+statisticsInfoParamPOJO);

        LoginReturnPOJO loginReturnPOJO =
                (LoginReturnPOJO) request.getSession().getAttribute(SessionConstant.CURRENT);

        //统计可分配权限个数
        Integer permissionCount = PermissionUtil.permissionCount(request, "可分配");

        if(permissionCount >= 1){ //有"可分配"权限的人全部可查看
           return statisticsInfoService.statisticsUnHandleBackviewAllToday(statisticsInfoParamPOJO); //参数:分页信息和当日时间区间(默认)
        }
        //没有"可分配"权限的人只能查看自己的今日待回访 先做只能查看自己的
        return  statisticsInfoService.statisticsUnHandleBackviewOfMyselfToday(statisticsInfoParamPOJO,loginReturnPOJO.getUser().getUserId());
    }

    /**
     * @param statisticsInfoParamPOJO
     * @return ResultInfoV110
     * @Author wuweinan
     * @Description 统计今日的预约到访差集今日回访
     * @Date 2021-8-9
     */
    @GetMapping("/todayUnHandleInterview/list")
    public ResultInfoV110 statisticsTodayUnHandleInterview(StatisticsInfoParamPOJO statisticsInfoParamPOJO,
                                                           HttpServletRequest request
                                                           ){
        log.info("StatisticsInfoController的statisticsTodayUnHandleInterview方法进入," +
                "参数statisticsInfoParamPOJO为"+statisticsInfoParamPOJO);

        LoginReturnPOJO loginReturnPOJO =
                (LoginReturnPOJO) request.getSession().getAttribute(SessionConstant.CURRENT);
        //统计可分配权限个数
        Integer permissionCount = PermissionUtil.permissionCount(request, "可分配");
        if(permissionCount >= 1){ //有"可分配"权限的人全部可看
          return   statisticsInfoService.statisticsUnHandleInterviewAllToday(statisticsInfoParamPOJO);
        }
        //没有"可分配"权限的人只能看自己的
        return statisticsInfoService.statisticsUnHandleInterviewOfMyselfToday(statisticsInfoParamPOJO,
                                                                                loginReturnPOJO.getUser().getUserId());
    }
}
